package datos;

import java.util.Date;


public class Incidencia extends Tarea {

	public static final int NUMEROSEGUIMIENTO = 101;
	public static final int TIPO = 102;
	public static final int SIEBEL = 103;

	public static final String CORRECTIVO = "Correctivo";
	public static final String EVOLUTIVO = "Evolutivo";

	public static final String INCIDENCIA = "Incidencia";
	public static final String PETICION = "Peticion";
	public static final String SUGERENCIA = "Sugerencia";
	public static final String CONSULTA = "Consulta";
	public static final String PROBLEMA_GLOBAL = "Problema global";
	public static final String[] TIPOS = { "", Incidencia.INCIDENCIA, Incidencia.PETICION, Incidencia.SUGERENCIA, Incidencia.CONSULTA, Incidencia.PROBLEMA_GLOBAL };

	private boolean siebel;
	private String numeroseguimiento = null;
	private String tipo = null;

	public Incidencia(boolean siebel, Date fechaCreacion) {
		this(new String(), siebel, fechaCreacion);
	}

	public Incidencia() {
		this(new String(), true, new Date());
	}

	public Incidencia(String numeroseguimiento, boolean siebel, Date fechaCreacion) {
		super(fechaCreacion);
		this.numeroseguimiento = numeroseguimiento;
		this.tipo = "";
		this.siebel = siebel;
	}
	
	public boolean isSiebel() {
		return siebel;
	}

	public String getNumeroseguimiento() {
		return numeroseguimiento;
	}

	public String getTipo() {
		return tipo;
	}
	
	public String getImputacion() {
		if (tipo.equals(Incidencia.CONSULTA) || tipo.equals(Incidencia.PETICION) || tipo.equals(Incidencia.SUGERENCIA))
			return Incidencia.EVOLUTIVO;
		if (tipo.equals(INCIDENCIA))
			return Incidencia.CORRECTIVO;
		return "";
	}
	
	public void actualiza(int campo, Object valor) {
		switch (campo) {
		case NUMEROSEGUIMIENTO:
			numeroseguimiento = (String) valor;
			break;
		case TIPO:
			tipo = (String) valor;
			break;
		case SIEBEL:
			siebel = ((Boolean) valor).booleanValue();
			break;
		default:
			super.actualiza(campo, valor);
		}
	}

	public String toString() {
		if (!siebel) {
			if (nombre.length() == 0)
				return "Incidencia ajena a siebel sin nombre";
			return getNombre();
		}
		if (numeroseguimiento.length() == 0)
			return "Incidencia sin numero";
		if (nombre.length() == 0)
			return getNumeroseguimiento();
		return getNumeroseguimiento() + " (" + getNombre() + ")";
	}

	@Override
	public String getNombreTipo() {
		return "incidencia";
	}	
}
